package com.lxl.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import com.lxl.dao.BookClassifyDao;
import com.lxl.model.BookClassify;

/**
 * @author 刘星鹭
 * @Email liuxinglumail@163.com
 * @version 创建时间： 2014年9月12日 下午4:27:03
 */
public class BookClassifyDaoImpl implements BookClassifyDao {

	@Override
	public void persist(BookClassify bookClassify) { // 以下为CRUD方法

		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("myJPA");// 创建事务管理器工厂
		EntityManager em = factory.createEntityManager();// 创建事务管理器
		em.getTransaction().begin();// 开始事务，只有写入数据要开事务，读取不要
		em.persist(bookClassify);
		em.getTransaction().commit();// 提交事务
		em.close();// 关闭事务管理器
		factory.close();// 关闭事务管理器功能工厂

	}

	@SuppressWarnings("unchecked")
	@Override
	public List<BookClassify> list() {
		
		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("myJPA");// 创建事务管理器工厂
		EntityManager em = factory.createEntityManager();// 创建事务管理器
		em.getTransaction().begin();// 开始事务，只有写入数据要开事务，读取不要
		List<BookClassify> list = em.createQuery("from BookClassify")
				.getResultList();
		em.getTransaction().commit();// 提交事务
		em.close();// 关闭事务管理器
		factory.close();// 关闭事务管理器功能工厂
		return list;
		
	}

	@Override
	public void delete(String bookClassifyName) {

		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("myJPA");// 创建事务管理器工厂
		EntityManager em = factory.createEntityManager();// 创建事务管理器
		em.getTransaction().begin();// 开始事务，只有写入数据要开事务，读取不要
		em.remove(em.find(BookClassify.class, bookClassifyName));
		em.getTransaction().commit();// 提交事务
		em.close();// 关闭事务管理器
		factory.close();// 关闭事务管理器功能工厂

	}

	@Override
	public void merge(String oldBookClassifyName, String newBookClassifyName) {

		EntityManagerFactory factory = Persistence
				.createEntityManagerFactory("myJPA");// 创建事务管理器工厂
		EntityManager em = factory.createEntityManager();// 创建事务管理器
		em.getTransaction().begin();// 开始事务，只有写入数据要开事务，读取不要
		delete(oldBookClassifyName);
		em.persist(new BookClassify(newBookClassifyName));
		em.getTransaction().commit();// 提交事务
		em.close();// 关闭事务管理器
		factory.close();// 关闭事务管理器功能工厂

	}
}
